package com.boss.thirteen.dao;

import com.boss.framework.dto.PaginationDTO;
import com.boss.thirteen.entity.ThirteenAgencyVerify;

import java.util.List;
import java.util.Map;

public interface IThirteenAgencyVerifyDao {
    /**
     * 分页查询十三月工资单位审核状态数据
     * @param paginationDTO
     * @param params
     * @return
     */
    List<ThirteenAgencyVerify> queryThirteenAgencyVerify(PaginationDTO paginationDTO, Map<String, Object> params,List<String> agencyIds);

    /**
     * 查询总条数
     * @param params
     * @return
     */
    int queryThirteenAgencyCount(Map<String, Object> params,List<String> agencyIds);
    /**
     * 按条件查询模板单位信息
     *
     * @param params 查询条件
     * @return
     */
    List<ThirteenAgencyVerify> selectThirteenAgencyVerify(Map<String,Object> params);
    /**
     * 批量新增十三月工资单位
     * @param list
     */
    void batchInsertThirteenAgencyVerify(List<ThirteenAgencyVerify> list);

    /**
     * 批量修改十三月工资单位
     * @param list
     */
    void batchUpdateThirteenAgencyVerify(List<ThirteenAgencyVerify> list);

    /**
     * 修改十三月工资上报状态
     * @param list
     */
    void batchUpdateThirteenAgencyStatus(List<ThirteenAgencyVerify> list);

    /**
     * 删除十三月工资单位
     *  @param params 条件
     */
    void deleteThirteenAgencyVerify(Map<String,Object> params);

    /**
     * 查询十三月工资流程未月结信息
     * @param agencyId
     * @return
     */
    ThirteenAgencyVerify getThirteenInfoByAgencyId(String agencyId);

    /**
     * 根据机构ID和状态名称查询状态
     * @param agencyId
     * @return
     */
    Map<String, Object> selectStateByAgencyId(String agencyId, String... columnNames);

    /**
     * 根据单位id获取单位下未月结的数据
     * @param agencyIds
     * @return
     */
    List<ThirteenAgencyVerify> getAgencyVerifyByAgencyIds(List<String> agencyIds);

    /**
     * 修改生成工资数据状态为未生成
     * @param agencyVerifys
     */
    void batchUpdateAgencyVerifypayStatus(List<ThirteenAgencyVerify> agencyVerifys);

    /**
     * 查十三月工资分银行已生成支付单位状态
     * @param bank
     * @param mofDivCode
     * @return
     */
    List<ThirteenAgencyVerify> getAgencyVerifyBySalaryBank(String bank,String mofDivCode);

    /**
     * 修改十三月工资生成银行数据状态
     * @param agencyVerifys
     * @param status
     */
    void batchUpdateAgencyVerifyBankStatus(List<ThirteenAgencyVerify> agencyVerifys,String status);

    /**
     * 撤销生成银行数据
     * @param province
     */
    void revokeGenerate(String province);

    /**
     * 修改十三月工资年结状态
     * @param agencyIds
     * @param year
     * @param status
     */
    void updateAgencyVerifyEndStatus(String province,List<String> agencyIds,String year,String status);

    /**
     * 获取所选单位年度
     * @param agencyIds
     * @return
     */
    String currentYear(List<String> agencyIds);
}
